home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / oscar / login2.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  8KB  |  173 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. HOST = 'kdc.uas.aol.com'
  5. HOST2 = 'localhost:50000'
  6. top = 'POST / HTTP/1.1\r\n' + 'Accept: application/x-snac\r\n' + 'Content-Type: application/x-snac\r\n' + 'User-Agent: CLC/1.0\r\n' + 'Host: ' + HOST + '\r\n' + 'Content-Length: %d'
  7. top2 = '\r\n' + 'Connection: Keep-Alive\r\n' + 'Cache-Control: no-cache\r\n' + '\r\n'
  8. top3 = '\x05\x0c\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00'
  9. middle = '\xc0\xa8\xd7\x80\x00\x00\x00\x01\x00\x00\x00\x06\x05\x00\x00\x00\x00\x02\x00\n' + '\x00\x02\x00\x01\x00\x0b\x00\x04\x00\x10' + '\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00' + '\x00\x02US' + '\x00\x02en' + '\x00\x02\x00\x03' + '\x00\x02US' + '\x00\x04\x00\x02en' + '\x00\x00\x00\x00\x00\x00'
  10. m2 = '\x00\rTritonService' + '\x00\x00\x00\x00\x00\x00\x00\x01' + '\x00\x02'
  11. remainder = '@\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + '\x00\x14urfaceisnotapassword' + '\x00\x03\x00\x01' + '\x00\x05UTF-8' + '\x00\x02' + '\x00\x02en' + '\x00\x03' + '\x00\x02US'
  12. from util import pack_pstr, unpack_pstr
  13.  
  14. def make_remainder(password):
  15.     return '@\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + pack_pstr('\x00' + pack_pstr(password) + '\x00\x03\x00\x01' + '\x00\x05UTF-8' + '\x00\x02' + '\x00\x02en' + '\x00\x03' + '\x00\x02US')
  16.  
  17. import socket
  18. from struct import pack
  19. from util import fmt_to_dict
  20. SiteState = fmt_to_dict('|', ':')
  21.  
  22. def do_https(v):
  23.     s = socket.SocketType()
  24.     s.connect(('kdc.uas.aol.com', 443))
  25.     s = socket.ssl(s)
  26.     s.write(v)
  27.     return s
  28.  
  29.  
  30. def make_packet(un, password):
  31.     n = top3 + 'i0' + middle
  32.     n += pack_pstr(un)
  33.     n += m2
  34.     r = make_remainder(password)
  35.     n += pack('!H', len(r))
  36.     n += r
  37.     t = top % len(n)
  38.     return t + top2 + n
  39.  
  40.  
  41. def get_krbtgt(un, password):
  42.     n = make_packet(un, password)
  43.     s = do_https(n)
  44.     return s.read()
  45.  
  46.  
  47. def make_packet2(un, password):
  48.     n = top3 + 'i0' + middle
  49.     n += pack_pstr(un.encode('ascii'))
  50.     n += m2
  51.     r = make_remainder(password)
  52.     n += pack('!H', len(r))
  53.     n += r
  54.     return n
  55.  
  56.  
  57. def get_krbtgt2(un, password):
  58.     import urllib2 as urllib2
  59.     n = make_packet2(un, password)
  60.     loc = 'https://' + HOST + '/'
  61.     req = urllib2.Request(loc, n, headers = {
  62.         'Content-Type': 'application/x-snac',
  63.         'Accept': 'application/x-snac' })
  64.     return urllib2.urlopen(req).read()
  65.  
  66. from struct import unpack
  67. from datetime import datetime
  68. import base64
  69. from util import UrlQuery
  70. from OscarUtil import s_tlv, s_tlv_list, tlv
  71.  
  72. def readshort(bytes):
  73.     return (unpack('!H', bytes[:2])[0], bytes[2:])
  74.  
  75.  
  76. def readlen(bytes, _len):
  77.     return (bytes[:_len], bytes[_len:])
  78.  
  79. from logging import getLogger
  80. xsnaclog = getLogger('X_SNAC')
  81.  
  82. class X_SNAC(object):
  83.     
  84.     def __init__(self, bytes):
  85.         xsnaclog.info('bytes were %r', bytes)
  86.         (self.family, self.subtype) = unpack('!HH', bytes[:4])
  87.         bytes = bytes[4:]
  88.         self.flags = bytes[:8]
  89.         bytes = bytes[8:]
  90.         self.reqid = bytes[:2]
  91.         bytes = bytes[2:]
  92.         self.date1 = datetime.fromtimestamp(unpack('!I', bytes[:4])[0])
  93.         bytes = bytes[4:]
  94.         (self.unknown1, bytes) = readlen(bytes, 4)
  95.         (plen, bytes) = readshort(bytes)
  96.         (self.principal1, bytes) = readlen(bytes, plen)
  97.         (plen, bytes) = readshort(bytes)
  98.         (self.principal2, bytes) = readlen(bytes, plen)
  99.         (num_tokens, bytes) = readshort(bytes)
  100.         self.tokens = []
  101.         for i in range(num_tokens):
  102.             d = { }
  103.             self.tokens.append(d)
  104.             (d['main'], bytes) = s_tlv(bytes)
  105.             d['strs'] = []
  106.             for j in range(4):
  107.                 (l, bytes) = readshort(bytes)
  108.                 (s, bytes) = readlen(bytes, l)
  109.                 d['strs'].append(s)
  110.             
  111.             d['0x10'] = unpack('!B', bytes[0])
  112.             bytes = bytes[1:]
  113.             (l, bytes) = readshort(bytes)
  114.             (d['footer_junk1'], bytes) = readlen(bytes, l)
  115.             (d['footer_dates'], bytes) = readlen(bytes, 24)
  116.             dates = [ d['footer_dates'][x:x + 4] for x in range(0, 24, 4) ]
  117.             dates = [ unpack('!I', date)[0] for date in dates ]
  118.             d['footer_dates'] = [ datetime.fromtimestamp(date) for date in dates ]
  119.             (d['footer_junk2'], bytes) = readlen(bytes, 12)
  120.             (num_tlvs, bytes) = readshort(bytes)
  121.             (d['footer_tlvs'], bytes) = s_tlv_list(bytes, num_tlvs)
  122.         
  123.         (num_tlvs, bytes) = readshort(bytes)
  124.         self.footer = s_tlv_list(bytes, num_tlvs)
  125.  
  126.  
  127.  
  128. def go_to_mail(un = 'digsby01', password = 'thisisapassword', baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?', sitedomain = 'sns.webmail.aol.com', OrigUrl = 'http://webmail.aol.com/Suite.aspx?'):
  129.     OrigUrl = UrlQuery(OrigUrl, app = 'mail')
  130.     t = X_SNAC(get_krbtgt2(un, password))
  131.     mytlv = t.tokens[1]['main']
  132.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  133.     out = UrlQuery(baseurl, sitedomain = sitedomain, lang = 'en', locale = 'us', siteState = 'OrigUrl=' + OrigUrl, mcState = 'doAAMAuth', authToken = authTok)
  134.     import wx as wx
  135.     wx.LaunchDefaultBrowser(out)
  136.  
  137.  
  138. def go_to_mail2(un = 'digsby01', password = 'passwordsshouldntbeinsourcecode', remainder = ''):
  139.     t = X_SNAC(get_krbtgt2(un, password))
  140.     mytlv = t.tokens[1]['main']
  141.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  142.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  143.     out = UrlQuery(baseurl, authToken = authTok)
  144.     import wx
  145.     wx.LaunchDefaultBrowser(out + remainder)
  146.  
  147.  
  148. def go_to_compose(un = 'digsby01', password = 'theresalotofthesepasswords', **k):
  149.     xsnaclog.debug_s('go_to_compose %s', k)
  150.     t = X_SNAC(get_krbtgt2(un, password))
  151.     mytlv = t.tokens[1]['main']
  152.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  153.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  154.     quote = quote
  155.     import urllib
  156.     out = UrlQuery(baseurl, authToken = authTok, mcState = 'doAAMAuth', sitedomain = 'sns.webmail.aol.com', siteState = SiteState({ }, ver = '2', ac = 'WS', at = 'SNS', ld = 'webmail.aol.com', rp = quote(UrlQuery('mail/composemessage.aspx?', **k), safe = ''), uv = 'AIM', lc = 'en-us'))
  157.     import wx
  158.     xsnaclog.debug_s('go_to_compose out: %r', out)
  159.     wx.LaunchDefaultBrowser(out)
  160.  
  161.  
  162. def go_to_msg(un = 'digsby01', password = 'howmanypasswordsdoesittaketochangealightbulb', msg = '18282583'):
  163.     t = X_SNAC(get_krbtgt2(un, password))
  164.     mytlv = t.tokens[1]['main']
  165.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  166.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  167.     quote = quote
  168.     import urllib
  169.     out = UrlQuery(baseurl, authToken = authTok, mcState = 'doAAMAuth', sitedomain = 'sns.webmail.aol.com', lang = 'en', locale = 'us', siteState = 'ver:2|ac:WS|at:SNS|ld:webmail.aol.com|rp:' + quote(UrlQuery('Lite/MsgRead.aspx?', dict(folder = 'Inbox', uid = '1.' + msg, seq = '1', start = '0')), safe = '') + '|uv:AIM|lc:en-us')
  170.     import wx
  171.     wx.LaunchDefaultBrowser(out)
  172.  
  173.